package com.example.appfighter.evento;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class EventoDB {

	private SQLiteDatabase db;
	private EventoDBHelper dbHelper;

	// query que cria a tabela do banco
	private static final String SCRIPT_DB_CREATE = "create table evento (_id integer primary "
			+ "key autoincrement, nome text not null, "
			+ "tipo int, horaInicio text, dataEvento text , valorEvento text,"
			+ "contato text, local text, cidade text, referencia text);";

	public EventoDB(Context ctx) {
		dbHelper = new EventoDBHelper(ctx, "eventoDB", 1, SCRIPT_DB_CREATE);
	}

	// linka as colunas do banco com o objeto da classe
	private ContentValues getValues(Evento e) {
		ContentValues cv = new ContentValues();
		cv.put("nome", e.nome);
		cv.put("tipo", e.tipo);
		cv.put("horaInicio", e.horaInicio);
		cv.put("dataEvento", e.dataEvento);
		cv.put("valorEvento", e.valorEvento);
		cv.put("contato", e.contato);
		cv.put("local", e.local);
		cv.put("cidade", e.cidade);
		cv.put("referencia", e.referencia);
		return cv;
	}

	// insere a campanha
	public long inserir(Evento e) {
		db = dbHelper.getWritableDatabase();
		long id = db.insert("evento", null, getValues(e));
		e.id = id;
		db.close();
		return id;
	}

	// atualiza a campanha
	public long atualizar(Evento e) {
		db = dbHelper.getWritableDatabase();
		long rows = db.update("evento", getValues(e), "_id = ?",
				new String[] { String.valueOf(e.id) });
		db.close();
		return rows; // qtde. de linhas afetadas
	}

	// exclui a campanha
	public int excluir(long id) {
		db = dbHelper.getWritableDatabase();
		int rows = db.delete("evento", "_id = ?",
				new String[] { String.valueOf(id) });
		return rows; // qtde. de linhas afetadas
	}

	// busca a campanha por nome
	public List<Evento> buscarEventoNome(String nome) {
		List<Evento> lista = new ArrayList<Evento>();

		String[] args = new String[] { nome + "%" };

		db = dbHelper.getWritableDatabase();
		Cursor cursor = db.rawQuery("select * from evento where nome like ?",
				args);

		while (cursor.moveToNext()) {
			Evento evento = fillEvento(cursor);
			lista.add(evento);
		}
		cursor.close();
		db.close();
		return lista;
	}

	// deleta todas as campanhas ao baixar o json e salva novamente no banco
	public boolean deletarTodosEvento() {
		@SuppressWarnings("unused")
		List<Evento> eventos = new ArrayList<Evento>();

		SQLiteDatabase db = dbHelper.getReadableDatabase();

		Cursor cursor = db.rawQuery("delete from evento", null);

		while (cursor.moveToNext()) {
			return false;
		}
		cursor.close();
		db.close();
		return true;
	}

	// o cursor vare a campanha e seta os valores para os atributos
	private Evento fillEvento(Cursor c) {
		Evento evento = new Evento();
		evento.id = c.getLong(0);
		evento.nome = c.getString(c.getColumnIndex("nome"));
		evento.tipo = c.getInt(c.getColumnIndex("tipo"));
		evento.horaInicio = c.getString(c.getColumnIndex("horaInicio"));
		evento.dataEvento = c.getString(c.getColumnIndex("dataEvento"));
		evento.valorEvento = c.getString(c.getColumnIndex("valorEvento"));
		evento.contato = c.getString(c.getColumnIndex("contato"));
		evento.local = c.getString(c.getColumnIndex("local"));
		evento.cidade = c.getString(c.getColumnIndex("cidade"));
		evento.referencia = c.getString(c.getColumnIndex("referencia"));
		return evento;
	}

}
